package com.lightsaber.trade.cloth.entity.programme;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.Table;

import com.lightsaber.trade.core.entity.AuditedObject;

/**
 * 
 */
@Entity
@Table(name = "MPI_PROG_STRUCTURE")
public class MpiProgramme extends AuditedObject {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    // Fields
    @EmbeddedId
    private MpiProgrammeId id;
    /*
     * @Column(name="PROG_STRUCT_CODE") private String progStructCode;
     * 
     * @Column(name="LAUNCH_YEAR") private Long launchYear;
     * 
     * @Column(name="LAUNCH_VERSION") private String launchVersion;
     */
    @Column(name = "PROG_STRUCT_LEVEL")
    private String progStructLevel;
    @Column(name = "DISCIPLINE")
    private String discipline;
    @Column(name = "PROG_BOARD")
    private String progBoard;
    @Column(name = "QF_LEVEL")
    private String qfLevel;
    @Column(name = "GAR_TYPE")
    private String garType;
    @Column(name = "PROG_CODE")
    private String progCode;

    @Column(name = "STREAM_CODE")
    private String streamCode;
    @Column(name = "TITLE")
    private String title;
    @Column(name = "C_TITLE")
    private String cTitle;
    @Column(name = "SHORT_TITLE")
    private String shortTitle;
    @Column(name = "C_SHORT_TITLE")
    private String CShortTitle;
    @Column(name = "DELIVERY_MODE")
    private String deliveryMode;
    @Column(name = "AWARD_LEVEL")
    private String awardLevel;
    @Column(name = "ENTRY_LEVEL")
    private String entryLevel;
    @Column(name = "APPROVAL_DATE")
    private Date approvalDate;
    @Column(name = "NORMAL_DURATION")
    private String normalDuration;
    @Column(name = "STUD_CARD_EXPIRY_DURATION")
    private String studCardExpiryDuration;
    @Column(name = "FUNDING_MODE")
    private String fundingMode;
    @Column(name = "CURRIC_HR")
    private Long curricHr;
    @Column(name = "PROG_AREA")
    private String progArea;
    @Column(name = "PROG_SUBAREA")
    private String progSubarea;
    @Column(name = "IS_SUBJECT_GROUP")
    private String isSubjectGroup;
    @Column(name = "SUBJECT_GROUP_MASTER")
    private String subjectGroupMaster;
    @Column(name = "HKCAAVQ_VALID_FM")
    private Date hkcaavqValidFm;
    @Column(name = "HKCAAVQ_VALID_TO")
    private Date hkcaavqValidTo;
    @Column(name = "INTERNAL_VALID_FM")
    private Date internalValidFm;
    @Column(name = "INTERNAL_VALID_TO")
    private Date internalValidTo;
    @Column(name = "EXT_EXAMINER_NAME_1")
    private String extExaminerName1;
    @Column(name = "EXT_EXAMINER_NAME_2")
    private String extExaminerName2;
    @Column(name = "EXT_EXAMINER_NAME_3")
    private String extExaminerName3;
    @Column(name = "C_EXT_EXAMINER_NAME_1")
    private String CExtExaminerName1;
    @Column(name = "C_EXT_EXAMINER_NAME_2")
    private String CExtExaminerName2;
    @Column(name = "C_EXT_EXAMINER_NAME_3")
    private String CExtExaminerName3;

    /* 2011/08/20 added by dj */
    @Column(name = "PROG_DURATION")
    private Integer progDuration;

    @Column(name = "PROG_DURATION_UNIT", nullable = true)
    @Enumerated(EnumType.STRING)
    private DurationType progDurationUnit;

    @Column(name = "MAINSTREAM")
    private String mainstream;

    @Column(name = "PROG_TYPE")
    private String progType;

    public MpiProgrammeId getId() {
        return id;
    }

    public void setId(final MpiProgrammeId id) {
        this.id = id;
    }

    public String getProgStructLevel() {
        return progStructLevel;
    }

    public void setProgStructLevel(final String progStructLevel) {
        this.progStructLevel = progStructLevel;
    }

    public String getDiscipline() {
        return discipline;
    }

    public void setDiscipline(final String discipline) {
        this.discipline = discipline;
    }

    public String getProgBoard() {
        return progBoard;
    }

    public void setProgBoard(final String progBoard) {
        this.progBoard = progBoard;
    }

    public String getQfLevel() {
        return qfLevel;
    }

    public void setQfLevel(final String qfLevel) {
        this.qfLevel = qfLevel;
    }

    public String getGarType() {
        return garType;
    }

    public void setGarType(final String garType) {
        this.garType = garType;
    }

    public String getProgCode() {
        return progCode;
    }

    public void setProgCode(final String progCode) {
        this.progCode = progCode;
    }

    public String getStreamCode() {
        return streamCode;
    }

    public void setStreamCode(final String streamCode) {
        this.streamCode = streamCode;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(final String title) {
        this.title = title;
    }

    public String getcTitle() {
        return cTitle;
    }

    public void setcTitle(final String cTitle) {
        this.cTitle = cTitle;
    }

    public String getShortTitle() {
        return shortTitle;
    }

    public void setShortTitle(final String shortTitle) {
        this.shortTitle = shortTitle;
    }

    public String getCShortTitle() {
        return CShortTitle;
    }

    public void setCShortTitle(final String cShortTitle) {
        CShortTitle = cShortTitle;
    }

    public String getDeliveryMode() {
        return deliveryMode;
    }

    public void setDeliveryMode(final String deliveryMode) {
        this.deliveryMode = deliveryMode;
    }

    public String getAwardLevel() {
        return awardLevel;
    }

    public void setAwardLevel(final String awardLevel) {
        this.awardLevel = awardLevel;
    }

    public String getEntryLevel() {
        return entryLevel;
    }

    public void setEntryLevel(final String entryLevel) {
        this.entryLevel = entryLevel;
    }

    public Date getApprovalDate() {
        return approvalDate;
    }

    public void setApprovalDate(final Date approvalDate) {
        this.approvalDate = approvalDate;
    }

    public String getNormalDuration() {
        return normalDuration;
    }

    public void setNormalDuration(final String normalDuration) {
        this.normalDuration = normalDuration;
    }

    public String getStudCardExpiryDuration() {
        return studCardExpiryDuration;
    }

    public void setStudCardExpiryDuration(final String studCardExpiryDuration) {
        this.studCardExpiryDuration = studCardExpiryDuration;
    }

    public String getFundingMode() {
        return fundingMode;
    }

    public void setFundingMode(final String fundingMode) {
        this.fundingMode = fundingMode;
    }

    public Long getCurricHr() {
        return curricHr;
    }

    public void setCurricHr(final Long curricHr) {
        this.curricHr = curricHr;
    }

    public String getProgArea() {
        return progArea;
    }

    public void setProgArea(final String progArea) {
        this.progArea = progArea;
    }

    public String getProgSubarea() {
        return progSubarea;
    }

    public void setProgSubarea(final String progSubarea) {
        this.progSubarea = progSubarea;
    }

    public String getIsSubjectGroup() {
        return isSubjectGroup;
    }

    public void setIsSubjectGroup(final String isSubjectGroup) {
        this.isSubjectGroup = isSubjectGroup;
    }

    public String getSubjectGroupMaster() {
        return subjectGroupMaster;
    }

    public void setSubjectGroupMaster(final String subjectGroupMaster) {
        this.subjectGroupMaster = subjectGroupMaster;
    }

    public Date getHkcaavqValidFm() {
        return hkcaavqValidFm;
    }

    public void setHkcaavqValidFm(final Date hkcaavqValidFm) {
        this.hkcaavqValidFm = hkcaavqValidFm;
    }

    public Date getHkcaavqValidTo() {
        return hkcaavqValidTo;
    }

    public void setHkcaavqValidTo(final Date hkcaavqValidTo) {
        this.hkcaavqValidTo = hkcaavqValidTo;
    }

    public Date getInternalValidFm() {
        return internalValidFm;
    }

    public void setInternalValidFm(final Date internalValidFm) {
        this.internalValidFm = internalValidFm;
    }

    public Date getInternalValidTo() {
        return internalValidTo;
    }

    public void setInternalValidTo(final Date internalValidTo) {
        this.internalValidTo = internalValidTo;
    }

    public String getExtExaminerName1() {
        return extExaminerName1;
    }

    public void setExtExaminerName1(final String extExaminerName1) {
        this.extExaminerName1 = extExaminerName1;
    }

    public String getExtExaminerName2() {
        return extExaminerName2;
    }

    public void setExtExaminerName2(final String extExaminerName2) {
        this.extExaminerName2 = extExaminerName2;
    }

    public String getExtExaminerName3() {
        return extExaminerName3;
    }

    public void setExtExaminerName3(final String extExaminerName3) {
        this.extExaminerName3 = extExaminerName3;
    }

    public String getCExtExaminerName1() {
        return CExtExaminerName1;
    }

    public void setCExtExaminerName1(final String cExtExaminerName1) {
        CExtExaminerName1 = cExtExaminerName1;
    }

    public String getCExtExaminerName2() {
        return CExtExaminerName2;
    }

    public void setCExtExaminerName2(final String cExtExaminerName2) {
        CExtExaminerName2 = cExtExaminerName2;
    }

    public String getCExtExaminerName3() {
        return CExtExaminerName3;
    }

    public void setCExtExaminerName3(final String cExtExaminerName3) {
        CExtExaminerName3 = cExtExaminerName3;
    }

    public Integer getProgDuration() {
        return progDuration;
    }

    public void setProgDuration(final Integer progDuration) {
        this.progDuration = progDuration;
    }

    public DurationType getProgDurationUnit() {
        return progDurationUnit;
    }

    public void setProgDurationUnit(final DurationType progDurationUnit) {
        this.progDurationUnit = progDurationUnit;
    }

    public String getMainstream() {
        return mainstream;
    }

    public void setMainstream(final String mainstream) {
        this.mainstream = mainstream;
    }

    public String getProgType() {
        return progType;
    }

    public void setProgType(final String progType) {
        this.progType = progType;
    }

    // Property accessors

}